Android — 有道翻译

前言

利用有道提供的API,写一个自动识别语言的翻译软件。支持汉译英,英译汉,小语种,短语句子等。实现也很简单,简单来说就是拼接URL然后请求网络返回接收数据后解析到UI中。

效果预览

实现流程

  1. 阅读官方API文档:http://ai.youdao.com/docs/api.s 可以看到拼接URL需要sign(签名),这里通过md5(appKey+q+salt+密钥)生成,所以要写一个方法生成MD5,传入我们拼接好的字符串就好了。即:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
private String getMD5Str(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
//16位加密取32位加密的第9位到25位
return md5StrBuff.toString().toUpperCase();
}
  1. 拼接好URL之后写异步类来处理网络请求,即MyAsync类,返回的结果传到jieXi.class用来解析json数据,再在异步类回调方法onPostExecute()更新UI就完事了。

源码

https://github.com/Omooo/YouDaoTrans

我们一直都向往,面朝大海,春暖花开。 但是几人能做到,心中有爱,四季不败?